package mine.code.question.动态规划;

import org.junit.Test;

/**
 * 给你一个只包含 '('和 ')'的字符串，找出最长有效（格式正确且连续）括号子串的长度。
 * <p>
 * 示例 1：
 * <p>
 * 输入：s = "(()"
 * 输出：2
 * 解释：最长有效括号子串是 "()"
 *
 * @author caijinnan
 */
public class 最长有效括号 {


    @Test
    public void run() {
        String s = "())(()";
        System.out.println(longestValidParentheses(s));
    }

    public int longestValidParentheses(String s) {
        char[] chars = s.toCharArray();
        int max = 0;
        for (int i = 0; i < chars.length; i++) {
            int tempMax = 0;
            int tempSum = 0;
            for (int j = i; j < chars.length; j++) {
                if (chars[j] == '(') {
                    tempSum += 1;

                } else {
                    if (tempSum == 0) {
                        break;
                    }
                    tempSum -= 1;
                }
                if (tempSum == 0) {
                    tempMax = Math.max(tempMax, j - i + 1);
                }
            }
            max = Math.max(max, tempMax);
        }
        return max;
    }
}
